import axios from "axios";
import { getToken } from "./tokens";
import router from "@/router";
import Toast from "vant/lib/toast";
import { removeToken } from "./tokens";

const request = axios.create({
  baseURL: "http://interview-api-t.itheima.net",
  timeout: 3000,
});


// 获取文章列表
export function getArticleList(obj) {
  return request.get("/h5/interview/query", {
    params: {
      current: obj.current, // 当前页
      pageSize: 10, // 每页10条
      sorter: obj.sorter, // 排序
    },
    headers: {
      Authorization: `Bearer ${getToken()}`,
    },
  });
}
// 获取单个文章详情
export const getArticleDetail = (id) => {
  return request.get("/h5/interview/show", {
    params: {
      id,
    },
  });
};

// 添加请求拦截器
request.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // 统一添加请求头
    const token = getToken();

    if (token) {
      // config 就是你发的请求的配置对象
      config.headers.Authorization = `Bearer ${token}`;
    }

    return config;
  },
  function (e) {
    // 对请求错误做些什么
    return Promise.reject(e);
  }
);

// 添加响应拦截器
request.interceptors.response.use(
  function (res) {
    // 对响应数据做点什么
    // 响应成功触发的函数
    return res.data;
  },
  function (e) {
    // 对响应错误做点什么
    // 统一对出错的响应 给提示就行了
    // 出错的响应分两种: 1. 压根没回来 2.回来了但是错了
    if (e.response) {
      // 有响应  但是失败了
      // console.log(error.response)
      if (e.response.status === 401) {
        // token有问题的错误
        removeToken();
        router.push("/login");
        Toast.fail("登录已过期, 请重新登录...");
      } else {
        // this.$toast.fail()
        Toast.fail(e.response.data.message);
      }
    }
    return Promise.reject(e);
  }
);

export default request;
